﻿/*----------------------------------------------------------------------------------------
*
*  Copyright 2019, Gao Hai Hui, <fromzeropoint@126.com>.  All rights reserved.
*  https://gitee.com/helloworldghh/xoskit.git
*  Use of this source code is governed by a MIT license
*  that can be found in the License file.
*
----------------------------------------------------------------------------------------*/
#ifndef __4CD29579_9D7A_4DD4_8F2F_BC0CA9A3DDA0__
#define __4CD29579_9D7A_4DD4_8F2F_BC0CA9A3DDA0__

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//

// pack
#define XOS_PACKING         8

// offset
#define xos_offsetofclass( base, derived ) ((xos::xos_int)(static_cast< base* >(( derived* )XOS_PACKING))-XOS_PACKING)

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//

namespace xos
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //

    // entry struct
    struct _XOS_COM_INTERFACE_MAP_ENTRY
    {
        const char *            iid;
        xos::xos_int            dw;
        xos::xos_int            of;
    };

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //

    int xos_internal_query_interface( void * pThis, const _XOS_COM_INTERFACE_MAP_ENTRY * pEntries, const char * iid, void ** ppv );
    int xos_is_equal_interface_id( const char * lpszStr1, const char * lpszStr2 );

}

#endif // __4CD29579_9D7A_4DD4_8F2F_BC0CA9A3DDA0__
